package com.oa.gform.client.ui.datamodel;

import java.util.ArrayList;

import com.google.gwt.user.client.rpc.IsSerializable;

/***
 * Implementazione di una lista di ListItem
 * @author Marco
 *
 * @param <KeyValueType>
 * @param <DataValueType>
 * @param <DependicyValueType>
 */
@SuppressWarnings("serial")
public class ListItems<KeyValueType,DataValueType,DependicyValueType> extends ArrayList<ListItem<KeyValueType,DataValueType,DependicyValueType>> implements IsSerializable{

	/***
	 * Controlla se nella lista degli item esiste la chiave passata
	 * e se si restituisce il valore associato.
	 * @param value retitusce il valore con la chiave passata
	 * @return
	 */
	public ListItem<KeyValueType,DataValueType,DependicyValueType> getItemByKey(KeyValueType key) {
		if (key == null) return null;
		for (ListItem<KeyValueType,DataValueType,DependicyValueType> item : this) {
			if (key.equals(item.getKey())) {
				return item;
			}
		}
		return null;
	}
	
	/***
	 * Controlla se nella lista degli item esiste un valore passato
	 * @param value retitusce il valore con la chiave passata
	 * @return
	 */	
	public ListItem<KeyValueType,DataValueType,DependicyValueType> getItemByValue(Object value) {
		if (value == null) return null;
		for (ListItem<KeyValueType,DataValueType,DependicyValueType> item : this) {
			if (value.equals(item.getValue())) {
				return item;
			}
		}
		return null;
	}
	 
	

}
